package br.com.veterinariavillage.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import br.com.veterinariavillage.model.Especie;

public class DAOEspecie implements IDAOEspecie {
	
	Connection conexao = GenericDao.getConnection();

	@Override
	public Especie localizar(String tipo) {
		Especie especie = null;
		ResultSet rs = null;
		try{
			PreparedStatement ps = conexao.prepareStatement("select cod_especie, tipo from Especie where tipo = ?");
			ps.setString(1, tipo);
			ps.execute();
			rs = ps.getResultSet();
			while (rs.next()){
				especie = new Especie();
				especie.setCodigo(rs.getInt("cod_especie"));
				especie.setTipo(rs.getString("tipo"));
			}
			ps.close();
		}catch (Exception e){
			e.printStackTrace();
		}
		return especie;
	}

	@Override
	public ArrayList<Especie> localizar() {
		ArrayList<Especie> listaEspecie = new ArrayList<Especie>();
		ResultSet rs = null;
		try{
			PreparedStatement ps = conexao.prepareStatement("select cod_especie, tipo from Especie ");
			ps.execute();
			rs = ps.getResultSet();
			while (rs.next()){
				Especie especie = new Especie();
				especie.setCodigo(rs.getInt("cod_especie"));
				especie.setTipo(rs.getString("tipo"));
				listaEspecie.add(especie);
			}
			ps.close();
		}catch (Exception e){
			e.printStackTrace();
		}
		return listaEspecie;
	}

	@Override
	public void inserir(Especie e) {
		try{
			PreparedStatement ps = conexao.prepareStatement("insert into Especie(tipo) values (?)");
			ps.setString(1, e.getTipo());
			ps.execute();
			ps.close();
		}catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	@Override
	public void atualizar(Especie e) {
		try{
			PreparedStatement ps = conexao.prepareStatement("update Especie set tipo = ? where cod_especie = ?");
			ps.setString(1, e.getTipo());
			ps.setInt(2, e.getCodigo());
			ps.execute();
			ps.close();
		} catch(Exception ex){
			ex.printStackTrace();
		}
	}

	@Override
	public void excluir(Especie e) {
		try{
			PreparedStatement ps = conexao.prepareStatement("delete Especie where cod_especie = ?");
			ps.setInt(1,e.getCodigo());
			ps.execute();
			ps.close();
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}

	@Override
	public Especie localizar(int codigo) {
		Especie especie = null;
		ResultSet rs = null;
		try{
			PreparedStatement ps = conexao.prepareStatement("select cod_especie, tipo from Especie where cod_especie = ?");
			ps.setInt(1, codigo);
			ps.execute();
			rs = ps.getResultSet();
			while (rs.next()){
				especie = new Especie();
				especie.setCodigo(rs.getInt("cod_especie"));
				especie.setTipo(rs.getString("tipo"));
			}
			ps.close();
		}catch (Exception e){
			e.printStackTrace();
		}
		return especie;
	}

}
